package com.nanyang.tms.api.service.bill;

import com.nanyang.common.core.domain.ApiResult;
import com.nanyang.common.core.page.PageBean;
import com.nanyang.tms.api.dto.request.bill.BillAddRequest;
import com.nanyang.tms.api.dto.request.bill.BillQueryRequest;
import com.nanyang.tms.api.dto.request.bill.BillRecordQueryRequest;
import com.nanyang.tms.api.dto.request.bill.BillRecordUpdateRequest;
import com.nanyang.tms.api.dto.response.bill.BillPageResponse;
import com.nanyang.tms.api.dto.response.bill.BillRecordPageResponse;

public interface BillRpcService {

    /**
     *
     * <p>listBill</p>
     * <p>Description:(查询列表)</p>
     *
     * @param param
     * @return
     */
    ApiResult<PageBean<BillPageResponse>> listBill(BillQueryRequest param);

    /**
     *
     * <p>listBill</p>
     * <p>Description:(查询列表)</p>
     *
     * @param param
     * @return
     */
    ApiResult<PageBean<BillRecordPageResponse>> listBillRecord(BillRecordQueryRequest param);

    /**
     *
     * <p>addBill</p>
     * <p>Description:(添加)</p>
     *
     * @param param
     * @return
     */
    ApiResult<Boolean> addBill(BillAddRequest param);

    /**
     * 对账
     * @param param
     * @return
     */
    ApiResult<Boolean> checkBill(BillRecordUpdateRequest param);

    /**
     * 异步对账
     * @param billCode
     * @return
     */
    ApiResult<Boolean> syncCheckBill(String billCode);
    /**
     * 处理差异
     * @param param
     * @return
     */
    ApiResult<Boolean> solveBill(BillRecordUpdateRequest param);
    /**
     * 异步处理差异
     * @param billCode
     * @return
     */
    ApiResult<Boolean> syncSolveBill(String billCode);
}
